﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ProviderPattern
{
    // 定义数据访问提供者接口
    public interface IDataAccessProvider
    {
        void SaveData(string data);
    }

    // 定义 SQL 数据访问提供者
    public class SqlDataAccessProvider : IDataAccessProvider
    {
        public void SaveData(string data)
        {
            // 将数据保存到 SQL 数据库中
            Console.WriteLine("数据已保存到 SQL 数据库中：" + data);
        }
    }

    // 定义 MongoDB 数据访问提供者
    public class MongoDataAccessProvider : IDataAccessProvider
    {
        public void SaveData(string data)
        {
            // 将数据保存到 MongoDB 中
            Console.WriteLine("数据已保存到 MongoDB 中：" + data);
        }
    }

    // 数据访问服务类，它依赖于 IDataAccessProvider 接口
    public class DataAccessService
    {
        private IDataAccessProvider _provider;

        public DataAccessService(IDataAccessProvider provider)
        {
            _provider = provider;
        }

        public void SaveData(string data)
        {
            _provider.SaveData(data);
        }
    }
}
